package com.unitd.modules.gen.entity;

import com.unitd.comm.entity.SysEntity;
import org.hibernate.validator.constraints.Length;

import javax.persistence.Column;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 * @desc 生成方案Entity, 用于定义生成的表结构对象信息
 * @filename GenScheme.java
 * @copyright www.unitd.com
 * @author Hudan
 * @version 1.0 
 * @date 2017-04-29
 */ 
@Table(name = "gen_scheme")
public class GenScheme extends SysEntity {

	/** 名称 */
	private String name;
	/** 分类 */
	private String category;
	/** 生成包路径 */
	@Column(name = "package_name")
	private String packageName;
	/** 生成模块名 */
	@Column(name = "module_name")
	private String moduleName;
	/** 生成子模块名 */
	@Column(name = "sub_module_name")
	private String subModuleName;
	/** 生成文件的描述信息(用于类或文件描述) */
	@Column(name = "function_name")
	private String functionName;
	/** 生成文件的描述信息(简写) */
	@Column(name = "function_name_simple")
	private String functionNameSimple;
	/** 生成文件的作者 */
	@Column(name = "function_author")
	private String functionAuthor;
	/** 生成表名称,多个表名之间通过,分割 */
	@Column(name = "gen_table_names")
	private String genTableNames;

	@Transient
	private GenTable table;						// 业务表名
	@Transient
	private String flag; 						// 0:保存方案;1:保存方案并生成代码
	@Transient
	private Boolean replaceFile = false;		// 是否替换现有文件 false:不替换；true:替换文件

	/**
	 * @desc 构造方法 GenScheme
	 */
	public GenScheme(String id, String name, String category, String packageName, String moduleName, String subModuleName, String functionName, String functionNameSimple, String functionAuthor, String genTableNames, String createBy, java.util.Date createDate, String updateBy, java.util.Date updateDate, String remarks, String delFlag) {
		this.id = id;
		this.name = name;
		this.category = category;
		this.packageName = packageName;
		this.moduleName = moduleName;
		this.subModuleName = subModuleName;
		this.functionName = functionName;
		this.functionNameSimple = functionNameSimple;
		this.functionAuthor = functionAuthor;
		this.genTableNames = genTableNames;
		this.createBy = createBy;
		this.createDate = createDate;
		this.updateBy = updateBy;
		this.updateDate = updateDate;
		this.remarks = remarks;
		this.delFlag = delFlag;
	}

	/**
	 * @desc 构造方法 GenScheme
	 */
	public GenScheme() {
		super();
	}

	/**
	 * @desc 获取名称
	 * @return name - 名称
	 */
	@Length(min = 1, max = 200)
	public String getName() {
		return name;
	}

	/**
	 * @desc 设置名称
	 * @param name 名称
	 */
	public void setName(String name) {
		this.name = name == null ? null : name.trim();
	}

	/**
	 * @desc 获取分类
	 * @return category - 分类
	 */
	@Length(min = 1, max = 200)
	public String getCategory() {
		return category;
	}

	/**
	 * @desc 设置分类
	 * @param category 分类
	 */
	public void setCategory(String category) {
		this.category = category == null ? null : category.trim();
	}

	/**
	 * @desc 获取生成包路径
	 * @return package_name - 生成包路径
	 */
	@Length(min = 1, max = 200)
	public String getPackageName() {
		return packageName;
	}

	/**
	 * @desc 设置生成包路径
	 * @param packageName 生成包路径
	 */
	public void setPackageName(String packageName) {
		this.packageName = packageName == null ? null : packageName.trim();
	}

	/**
	 * @desc 获取生成模块名
	 * @return module_name - 生成模块名
	 */
	@Length(min = 1, max = 30)
	public String getModuleName() {
		return moduleName;
	}

	/**
	 * @desc 设置生成模块名
	 * @param moduleName 生成模块名
	 */
	public void setModuleName(String moduleName) {
		this.moduleName = moduleName == null ? null : moduleName.trim();
	}

	/**
	 * @desc 获取生成子模块名
	 * @return sub_module_name - 生成子模块名
	 */
	@Length(min = 0, max = 30)
	public String getSubModuleName() {
		return subModuleName;
	}

	/**
	 * @desc 设置生成子模块名
	 * @param subModuleName 生成子模块名
	 */
	public void setSubModuleName(String subModuleName) {
		this.subModuleName = subModuleName == null ? null : subModuleName.trim();
	}

	/**
	 * @desc 获取生成文件的描述信息(用于类或文件描述)
	 * @return function_name - 生成文件的描述信息(用于类或文件描述)
	 */
	public String getFunctionName() {
		return functionName;
	}

	/**
	 * @desc 设置生成文件的描述信息(用于类或文件描述)
	 * @param functionName 生成文件的描述信息(用于类或文件描述)
	 */
	public void setFunctionName(String functionName) {
		this.functionName = functionName == null ? null : functionName.trim();
	}

	/**
	 * @desc 获取生成文件的描述信息(简写)
	 * @return function_name_simple - 生成文件的描述信息(简写)
	 */
	public String getFunctionNameSimple() {
		return functionNameSimple;
	}

	/**
	 * @desc 设置生成文件的描述信息(简写)
	 * @param functionNameSimple 生成文件的描述信息(简写)
	 */
	public void setFunctionNameSimple(String functionNameSimple) {
		this.functionNameSimple = functionNameSimple == null ? null : functionNameSimple.trim();
	}

	/**
	 * @desc 获取生成文件的作者
	 * @return function_author - 生成文件的作者
	 */
	@Length(min = 1, max = 50)
	public String getFunctionAuthor() {
		return functionAuthor;
	}

	/**
	 * @desc 设置生成文件的作者
	 * @param functionAuthor 生成文件的作者
	 */
	public void setFunctionAuthor(String functionAuthor) {
		this.functionAuthor = functionAuthor == null ? null : functionAuthor.trim();
	}

	/**
	 * @desc 获取生成表名称,多个表之间通过,分割
	 * @return gen_table_names - 生成表名称,多个表之间通过,分割
	 */
	@Length(min = 1)
	public String getGenTableNames() {
		return genTableNames;
	}

	/**
	 * @desc 设置生成表名称,多个表之间通过,分割
	 * @param genTableNames 生成表名称,多个表之间通过,分割
	 */
	public void setGenTableNames(String genTableNames) {
		this.genTableNames = genTableNames == null ? null : genTableNames.trim();
	}

	public GenTable getTable() {
		return table;
	}

	public void setTable(GenTable table) {
		this.table = table;
	}

	public String getFlag() {
		return flag;
	}

	public void setFlag(String flag) {
		this.flag = flag;
	}

	public Boolean getReplaceFile() {
		return replaceFile;
	}

	public void setReplaceFile(Boolean replaceFile) {
		this.replaceFile = replaceFile;
	}
}